#include "ModuleImageReader.h"

void ModuleImageReader::init(QCVModuleHandlerInterface * parent)
{
	this->parent=parent;
	win=new QWidget();
  layout=new QVBoxLayout(win);
	
	rb_rgb=new QRadioButton("RVB",win);
	rb_nvg=new QRadioButton("NVG",win);
	le_filename=new QLineEdit(win);

	QHBoxLayout * hlayout=new QHBoxLayout();
	pb_load=new QPushButton("Charger",win);
	pb_send=new QPushButton("Envoyer",win);
	layout->addWidget(le_filename);
	layout->addWidget(pb_load);
	
	hlayout->addWidget(rb_rgb);
	hlayout->addWidget(rb_nvg);
	layout->addLayout(hlayout);
	layout->addWidget(pb_send);

	rb_rgb->setChecked(true);

	connect(pb_load,SIGNAL(clicked()),this,SLOT(s_load()));
	connect(pb_send,SIGNAL(clicked()),this,SLOT(s_send()));
}
////////////////////////////////////////////////////////////////////////////////
void ModuleImageReader::free()
{
	delete win;
}
////////////////////////////////////////////////////////////////////////////////
cv::Mat & ModuleImageReader::process()
{

}
////////////////////////////////////////////////////////////////////////////////
void ModuleImageReader::setInput(int n,const cv::Mat & m)
{

}
////////////////////////////////////////////////////////////////////////////////
QWidget* ModuleImageReader::widget()
{
	return win;
}
////////////////////////////////////////////////////////////////////////////////
QString ModuleImageReader::getName()
{
	return tr("Chargeur d'image");
}
////////////////////////////////////////////////////////////////////////////////
int ModuleImageReader::nbInputs()
{
	return 0;
}
////////////////////////////////////////////////////////////////////////////////
bool ModuleImageReader::setParams(QString params)
{
	QStringList list_params=params.split(";");
		
	if(list_params.size()==1)
	{
		rb_rgb->setChecked(list_params[0].toInt());
		rb_nvg->setChecked(!list_params[0].toInt());
		return true;
	}
	else
	{
		return false;
	}	
}
////////////////////////////////////////////////////////////////////////////////
QString ModuleImageReader::getParams()
{
	return QString::number(rb_rgb->isChecked());
}
////////////////////////////////////////////////////////////////////////////////
QCVModuleInterface * ModuleImageReader::clone()
{
	ModuleImageReader * selfcopy=new ModuleImageReader;
	return selfcopy;
}
////////////////////////////////////////////////////////////////////////////////
QString ModuleImageReader::help(int id)
{
	if(id==-2)
	{
		return tr("Permet de lire des images");
	}
	else if(id==-1)
	{
		return tr("image");
	}
	else if(id==0)
	{
		return tr("image");
	}
	else
	{
		return tr("erreur");
	}
}
////////////////////////////////////////////////////////////////////////////////
void ModuleImageReader::s_load()
{
	QString filename=QFileDialog::getOpenFileName(NULL,"Ouvrir une image","data",tr("*.bmp *.jpg *.png *.dib"));
	if(!filename.isEmpty())
	{
		cv::Mat buffer=cv::imread(filename.toAscii().data());
		
		cvtColor(buffer,image,CV_RGB2BGR);
		cvtColor(buffer,image_nvg,CV_RGB2GRAY);

		le_filename->setText(filename);		
	}
}
////////////////////////////////////////////////////////////////////////////////
void ModuleImageReader::s_send()
{
	if(rb_rgb->isChecked())
	{
		parent->forceOutput(image);
	}
	else
	{
		parent->forceOutput(image_nvg);
	}
}
////////////////////////////////////////////////////////////////////////////////
Q_EXPORT_PLUGIN2(ModuleImageReader_plugin,ModuleImageReader);  
